SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS OFF
GO
CREATE PROCEDURE [dbo].[paCalcularAntiguedadDeLosAgentesEnDiasxCargo]
--@Agente int,
@Convocatoria int,
@Cargo int,
@Asignatura int,
--@Desde datetime,
--@Hasta datetime,
@Res int output
 AS

SET NOCOUNT ON
SET DATEFORMAT dmy


declare @dw1 int
declare @dw2 int
declare @dh int

declare @PA datetime
declare @PB datetime
declare @FA datetime
declare @FB datetime
declare @Baja varchar(1)
declare @Licencia int
declare @Resultado int
declare @DiasHabiles int
declare @meses int
declare @anios int
declare @IdOrganizaciones int

declare @Agente int
declare @desde datetime
declare @hasta datetime
declare @CantDias int 
select @desde = (select cast(valor1 as datetime)  from tb_parametros where parametro = 'FechaInicioDesignaciones' ) 
--set @desde='01/03/2006'
set @hasta=getdate() --'22/03/2006'--getdate()

--set @agente=107852

declare @Cargogenerico int
declare @Asignaturagenerica int

select @Cargogenerico = case cargoGenerico when 700 then Asignaturagenerica else Cargogenerico end from tb_traslaciondeCyA  where cargo=@cargo

select @Asignaturagenerica=0

print 'Convocatoria: '+cast(@convocatoria as varchar) +  '         cg: ' + cast (@Cargogenerico as varchar) +  '         Ag:  ' + cast (@AsignaturaGenerica as varchar)

delete tb_Control120DiasTemp -- se vacia la tabla temporal

declare Inscriptos cursor forward_only  for 
Select distinct agente from tb_inscripcionesconvocatorias where convocatoria = @convocatoria and cargogenerico=@cargogenerico and asignaturagenerica=@asignaturagenerica  and agente=56425
FOR READ ONLY

OPEN inscriptos

fetch next from Inscriptos into @Agente


while @@fetch_status = 0
begin
	
	declare Subservicios cursor forward_only  for 
	Select s.ubicacionorig,s.cargosalarial,s.asignatura , ss.FechaAlta, ss.FechaBaja, ss.Baja, Licencia from tb_SubserviciosAgentes ss, tb_ServiciosAgentes s
	where s.agente = @Agente and  (ss.FechaBaja Is Null or ss.FechaBaja>=@Desde) and ss.FechaAlta<=@Hasta and @Cargo=S.CargoSalarial and  @Asignatura=S.Asignatura 
	and s.idServicioAgente = ss.ServicioAgente
	Order by ss.FechaAlta
	FOR READ ONLY


	Select @PA = @Desde, @PB=@Desde, @Resultado=0, @diashabiles=0

	OPEN SubServicios

	fetch next from SubServicios into @IdOrganizaciones,@CargoGenerico,@AsignaturaGenerica,@FA, @FB, @Baja,@Licencia

	print  ' Primera vez : --------->' + cast(@IdOrganizaciones as varchar) +' ' + cast(@CargoGenerico as varchar) +' ' +cast(@AsignaturaGenerica as varchar) +' ' + cast(@FA as varchar) +' ' + cast(isnull(@FB,getdate()) as varchar) + ' ' +cast(@Baja as varchar)  
             
	while @@fetch_status = 0
	begin
		
if  @FB is null set @FB=getdate()
		if (Select CuentaAntGral from tb_Licencias where idLicencia = @Licencia) = 'S' Or (Select CuentaAntGral from tb_Licencias where idLicencia = @Licencia) Is Null
			begin
			if @baja = 'N' or @FB > @Hasta
				Select @FB = @Hasta
			if @FA>@PB
				begin
				--Select @Resultado=@Resultado+(datediff(day,@PA,@PB))
				Select @PA=@FA,@PB=@FB
				end
			else
				begin
				if @FB>@PB
					Select @PB = @FB
				end
			end
if datediff(day, @PA,@PB) > 0  begin
		print  cast(@IdOrganizaciones as varchar) +' ' 
		print  cast(@CargoGenerico as varchar) +' '
                                print cast(@AsignaturaGenerica as varchar) +' ' + cast(@FA as varchar) +' ' + cast(@FB as varchar) + ' ' +cast(@Baja as varchar) + '    Dias ' + cast ((datediff(day, @PA,@PB)) as varchar)
		print ' Agente: ' + cast ( @Agente as varchar)
end
		select  @CantDias= isnull(datediff(day, @PA,@PB),0) +1
		select @resultado = @resultado+@CantDias
		if @CantDias > 0 insert  tb_Control120DiasTemp values  (@agente,@convocatoria,@IdOrganizaciones,@cargo,@Asignatura,@FA,@FB,@CantDias )
--		print @pb
--		print @pa
--		print (datediff(day, @PA,@PB))

		fetch next from SubServicios into @IdOrganizaciones,@CargoGenerico,@AsignaturaGenerica,@FA, @FB, @Baja,@Licencia
	end
	
	close SubServicios
	deallocate SubServicios

	--select @resultado = @resultado+(datediff(day, @PA,@PB))
	--print cast(@resultado as varchar(4))
	Select @Res = @Resultado
	print 'resultado' + cast ( @res as varchar)
	--return(@resultado)

	fetch next from Inscriptos into @Agente
end

close inscriptos
deallocate inscriptos
GO
